import Crawler from "crawler";

const c = new Crawler({
    rateLimit: 1000,
    callback:function(err,res,done){
        if(err){
            console.log('出现异常',err);
        }else{
            const $ = res.$;
            console.log($('title').text());
        }

        done();
    }
});

//GET请求示例
// 请求参数通过 URL 查询字符串传递
const getUrl = new URL('https://httpbin.org/get');
//请求参数
getUrl.searchParams.append('name','jack');
getUrl.searchParams.append('age',18);
//url 转换为字符串
console.log(getUrl.toString());
c.add({
    url: getUrl.toString(),
    method: 'GET',
    headers: {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'},
    callback:function(err,res,done){
        if(err){
            console.log('出现异常',err);
        }else{
            //获取响应头中 contentType
            const contentType = res.headers['content-type'] || '';
            if(contentType.includes('application/json')){
                //json数据，需要解析
                try{
                    console.log('解析成js对象',JSON.parse(res.body.toString()));

                }catch(e){
                    console.log('无法解析的json数据',res.body.toString());
                }

            }else{
                //输出响应文本
                console.log('响应文本',res.body.toString());
            }
            
        }

        done();
    }
})

//POST请求示例
// 请求参数通过 body 或 form 传递，示例用 JSON body
c.add({
    uri: 'https://httpbin.org/post',
    method: 'POST',
    body: JSON.stringify({username:'jack',age:19}),
    headers: {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36','Content-Type': 'application/json'},
    callback:function(err,res,done){
        if(err){
            console.log('出现异常',err);
        }else{
            //获取响应头中 contentType
            const contentType = res.headers['content-type'] || '';
            if(contentType.includes('application/json')){
                //json数据，需要解析
                try{
                    console.log('解析成js对象',JSON.parse(res.body.toString()));

                }catch(e){
                    console.log('无法解析的json数据',res.body.toString());
                }

            }else{
                //输出响应文本
                console.log('响应文本',res.body.toString());
            }
            
        }

        done();
    }
})
